/**
 * 
 */
package encheres.manager.ws;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.jws.WebService;

import org.hibernate.HibernateException;

import encheres.dao.ICategorieDAO;
import encheres.dao.IClientDAO;
import encheres.dao.IProduitDAO;
import encheres.dao.entities.Categorie;
import encheres.dao.entities.Client;
import encheres.dao.entities.Produit;
import encheres.dao.impl.CategorieDAOImpl;
import encheres.dao.impl.ClientDAOImpl;
import encheres.dao.impl.ProduitDAOImpl;
import encheres.manager.SessionManager;

/**
 * Service des produits.
 * @author Nicolas
 *
 */
@WebService(endpointInterface="encheres.manager.ws.IServiceEnchere")
public class ServiceEnchereImpl implements IServiceEnchere{

	/** Service DAO sur les produits. */ 
	IProduitDAO produitDao = new ProduitDAOImpl();
	
	/**
	 * Créé un produit proposé par un utilisateur.
	 *  
	 * @return 1 en cas de succès, 0 en cas d'échec de l'ajout (HibernateException ou n'arrive pas à convertir la date d'échéance) et -1 en cas d'erreur de session (utilisateur non identifié)
	 */
	public int creerProduit(String nom, int idCategorie, int idSession,
			String description, String dateEcheance, float prixDepart,
			float prixAcceptation) {
		try {
			//TODO : faire le cas où la session n'est pas correcte !
			DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
			// trouver la catégorie
			ICategorieDAO categorieDao = new CategorieDAOImpl();
			Categorie categorie = categorieDao.findCategorie(idCategorie);
			// trouver le client
			int idClient = SessionManager.findClientId(idSession);
			IClientDAO clientDao = new ClientDAOImpl();
			Client vendeur = clientDao.findClient(idClient);
			
			Produit produit = new Produit(vendeur, categorie, nom, description, prixDepart,prixAcceptation,format.parse(dateEcheance),null);
			this.produitDao.proposerProduit(produit);
			return 1;
		} catch (HibernateException e) {
			e.printStackTrace();
			return 0;
		} catch (ParseException e) {
			e.printStackTrace();
			return 0;
		} 
	}
}
